#define _CRT_SECURE_NO_WARNINGS 1

int arr[20];
print(arr);//arr是一个数组名，他表示首元素的地址，可以用一个指针来接收
          //指针的类型取决于数组中元素的类型
//int * p

int* arr[20];
print(arr);
//int** p


arr[3][5];     
1 2 3 4 5   arr代表首行的地址
2 3 4 5 6
3 4 5 6 7  
arr 代表首行元素的地址，同时也代表一维数组的
地址，可以用指针来接收   int (*p)[5]

二维数组的首地址是一维数组的地址，不能用一级指针接收


对函数取地址，函数指针
int Add(int x,int y)
{
    return x + y;
}

int (*pf)(int, int) = &Add


通过函数指针调用函数
int ret = (*pf)(2, 3);  函数指针名+实参
int ret = pf(2, 3)


*arr=*(arr+0)=arr[0]
**arr=*(arr[0]+0)=arr[0][0]


(*(void(*)())0)()//将0地址处的，强制转化为函数指针，
//然后再调用它，函数的参数部分为无参，返回类型为void